[INFO] cloning repository https://github.com/YuraCobain/chip8_emulator_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/YuraCobain/chip8_emulator_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuraCobain%2Fchip8_emulator_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuraCobain%2Fchip8_emulator_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9a769c7e94e2f8759e0da72e0d3e6d7701a6bdd3
[INFO] checking YuraCobain/chip8_emulator_rust against master#09a371361240e42b0d69438fd1179efcf212e576 for pr-157814-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuraCobain%2Fchip8_emulator_rust" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/YuraCobain/chip8_emulator_rust
[INFO] finished tweaking git repo https://github.com/YuraCobain/chip8_emulator_rust
[INFO] tweaked toml for git repo https://github.com/YuraCobain/chip8_emulator_rust written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/YuraCobain/chip8_emulator_rust on toolchain 09a371361240e42b0d69438fd1179efcf212e576
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/YuraCobain/chip8_emulator_rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `chip8_opcode` (manifest) generated 1 warning
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 16 packages to latest compatible versions
[INFO] [stderr]       Adding autocfg v1.5.1
[INFO] [stderr]       Adding bitflags v0.7.0
[INFO] [stderr]       Adding cfg-if v0.1.10
[INFO] [stderr]       Adding fuchsia-cprng v0.1.1
[INFO] [stderr]       Adding lazy_static v0.2.11
[INFO] [stderr]       Adding num v0.1.43
[INFO] [stderr]       Adding num-integer v0.1.46
[INFO] [stderr]       Adding num-iter v0.1.45
[INFO] [stderr]       Adding num-traits v0.2.19
[INFO] [stderr]       Adding rand v0.3.23
[INFO] [stderr]       Adding rand v0.4.6
[INFO] [stderr]       Adding rand_core v0.3.1
[INFO] [stderr]       Adding rand_core v0.4.2
[INFO] [stderr]       Adding rdrand v0.4.0
[INFO] [stderr]       Adding sdl2 v0.31.0 (available: v0.38.0)
[INFO] [stderr]       Adding sdl2-sys v0.31.0
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rand v0.3.23
[INFO] [stderr]   Downloaded rand v0.4.6
[INFO] [stderr]   Downloaded rdrand v0.4.0
[INFO] [stderr]   Downloaded lazy_static v0.2.11
[INFO] [stderr]   Downloaded fuchsia-cprng v0.1.1
[INFO] [stderr]   Downloaded num v0.1.43
[INFO] [stderr]   Downloaded rand_core v0.3.1
[INFO] [stderr]   Downloaded bitflags v1.0.3
[INFO] [stderr]   Downloaded rand_core v0.4.2
[INFO] [stderr]   Downloaded autocfg v1.5.1
[INFO] [stderr]   Downloaded rand_core v0.2.0
[INFO] [stderr]   Downloaded sdl2 v0.31.0
[INFO] [stderr]   Downloaded rand v0.5.0
[INFO] [stderr]   Downloaded sdl2-sys v0.31.0
[INFO] [stderr]   Downloaded libc v0.2.41
[INFO] [stderr]   Downloaded winapi v0.3.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83
[INFO] running `Command { std: "docker" "start" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83" "/opt/rustwide/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83" "/opt/rustwide/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `chip8_opcode` (manifest) generated 1 warning
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]     Checking libc v0.2.41
[INFO] [stderr]     Checking rand_core v0.2.0
[INFO] [stderr]     Checking bitflags v0.7.0
[INFO] [stderr]     Checking lazy_static v0.2.11
[INFO] [stderr]    Compiling sdl2-sys v0.31.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking rand v0.5.0
[INFO] [stderr]     Checking rand v0.3.23
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking num v0.1.43
[INFO] [stderr]     Checking sdl2 v0.31.0
[INFO] [stderr]     Checking chip8_opcode v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]   --> src/memory/mod.rs:57:41
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout]    |                                         ^                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout] 57 +         let low_byte: u16 = self.memory[addr as usize + 1 ] as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/memory/mod.rs:189:61
[INFO] [stdout]     |
[INFO] [stdout] 189 |             collision |= (row & row_prev != row_prev) as u8;;
[INFO] [stdout]     |                                                             ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:177:50
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                                                  ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 -             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout] 177 +             let mut row_bl = self.memory[curr_r][byte_offset + 1 ] as u16; 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout]     |                                 ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout] 187 +             self.memory[curr_r][byte_offset + 1 ] = row as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (CpuMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (dyn CpuMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:43:23
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (VideoMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (dyn VideoMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:44:24
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (MediaIf + 'a),
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (dyn MediaIf + 'a),
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:49:33
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut CpuMemory,
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut dyn CpuMemory,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:50:29
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut VideoMemory,
[INFO] [stdout]    |                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut dyn VideoMemory,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:51:30
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut dyn MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]   --> src/memory/mod.rs:57:41
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout]    |                                         ^                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout] 57 +         let low_byte: u16 = self.memory[addr as usize + 1 ] as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/memory/mod.rs:189:61
[INFO] [stdout]     |
[INFO] [stdout] 189 |             collision |= (row & row_prev != row_prev) as u8;;
[INFO] [stdout]     |                                                             ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:177:50
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                                                  ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 -             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout] 177 +             let mut row_bl = self.memory[curr_r][byte_offset + 1 ] as u16; 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout]     |                                 ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout] 187 +             self.memory[curr_r][byte_offset + 1 ] = row as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (CpuMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (dyn CpuMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:43:23
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (VideoMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (dyn VideoMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:44:24
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (MediaIf + 'a),
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (dyn MediaIf + 'a),
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:49:33
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut CpuMemory,
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut dyn CpuMemory,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:50:29
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut VideoMemory,
[INFO] [stdout]    |                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut dyn VideoMemory,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:51:30
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut dyn MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:176:17
[INFO] [stdout]     |
[INFO] [stdout] 176 |             let mut row_bh = self.memory[curr_r][byte_offset] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:177:17
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:176:17
[INFO] [stdout]     |
[INFO] [stdout] 176 |             let mut row_bh = self.memory[curr_r][byte_offset] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:177:17
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]   --> src/memory/mod.rs:57:41
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout]    |                                         ^                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout] 57 +         let low_byte: u16 = self.memory[addr as usize + 1 ] as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/memory/mod.rs:189:61
[INFO] [stdout]     |
[INFO] [stdout] 189 |             collision |= (row & row_prev != row_prev) as u8;;
[INFO] [stdout]     |                                                             ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:177:50
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                                                  ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 -             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout] 177 +             let mut row_bl = self.memory[curr_r][byte_offset + 1 ] as u16; 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout]     |                                 ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout] 187 +             self.memory[curr_r][byte_offset + 1 ] = row as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (CpuMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (dyn CpuMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:43:23
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (VideoMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (dyn VideoMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:44:24
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (MediaIf + 'a),
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (dyn MediaIf + 'a),
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:49:33
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut CpuMemory,
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut dyn CpuMemory,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:50:29
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut VideoMemory,
[INFO] [stdout]    |                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut dyn VideoMemory,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:51:30
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut dyn MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:72:50
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut emulator = CPU::new(&mut mem as &mut CpuMemory,
[INFO] [stdout]    |                                                  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut emulator = CPU::new(&mut mem as &mut dyn CpuMemory,
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:73:54
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...                   &mut display as &mut VideoMemory,
[INFO] [stdout]    |                                            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 73 |                                 &mut display as &mut dyn VideoMemory,
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:74:55
[INFO] [stdout]    |
[INFO] [stdout] 74 | ...                   &mut media_if as &mut MediaIf);
[INFO] [stdout]    |                                             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |                                 &mut media_if as &mut dyn MediaIf);
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:176:17
[INFO] [stdout]     |
[INFO] [stdout] 176 |             let mut row_bh = self.memory[curr_r][byte_offset] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:177:17
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]   --> src/memory/mod.rs:57:41
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout]    |                                         ^                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -         let low_byte: u16 = self.memory[(addr as usize + 1)] as u16;
[INFO] [stdout] 57 +         let low_byte: u16 = self.memory[addr as usize + 1 ] as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/memory/mod.rs:189:61
[INFO] [stdout]     |
[INFO] [stdout] 189 |             collision |= (row & row_prev != row_prev) as u8;;
[INFO] [stdout]     |                                                             ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:177:50
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                                                  ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 -             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout] 177 +             let mut row_bl = self.memory[curr_r][byte_offset + 1 ] as u16; 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/memory/mod.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout]     |                                 ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -             self.memory[curr_r][(byte_offset + 1)] = row as u8;
[INFO] [stdout] 187 +             self.memory[curr_r][byte_offset + 1 ] = row as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (CpuMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     cpu_mem: &'a mut (dyn CpuMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:43:23
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (VideoMemory + 'a), 
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 43 |     gfx_mem: &'a mut (dyn VideoMemory + 'a), 
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:44:24
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (MediaIf + 'a),
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     media_if: &'a mut (dyn MediaIf + 'a),
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_font_sprite` is never used
[INFO] [stdout]  --> src/memory/mod.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait CpuMemory {
[INFO] [stdout]   |           --------- method in this trait
[INFO] [stdout] 9 |     fn get_font_sprite(&self, s_n: u8) -> Option<&[u8]>;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_pressed_key` is never used
[INFO] [stdout]  --> src/media_if/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait MediaIf {
[INFO] [stdout]   |           ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 8 |     fn get_pressed_key(&self) -> Option<&u8>;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:49:33
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut CpuMemory,
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn new(cpu_mem: &'a mut dyn CpuMemory,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:50:29
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut VideoMemory,
[INFO] [stdout]    |                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |            gfx_mem: &'a mut dyn VideoMemory,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:51:30
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |            media_if: &'a mut dyn MediaIf) -> CPU<'a> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:72:50
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut emulator = CPU::new(&mut mem as &mut CpuMemory,
[INFO] [stdout]    |                                                  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut emulator = CPU::new(&mut mem as &mut dyn CpuMemory,
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:73:54
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...                   &mut display as &mut VideoMemory,
[INFO] [stdout]    |                                            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 73 |                                 &mut display as &mut dyn VideoMemory,
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:74:55
[INFO] [stdout]    |
[INFO] [stdout] 74 | ...                   &mut media_if as &mut MediaIf);
[INFO] [stdout]    |                                             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |                                 &mut media_if as &mut dyn MediaIf);
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:176:17
[INFO] [stdout]     |
[INFO] [stdout] 176 |             let mut row_bh = self.memory[curr_r][byte_offset] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/memory/mod.rs:177:17
[INFO] [stdout]     |
[INFO] [stdout] 177 |             let mut row_bl = self.memory[curr_r][(byte_offset + 1)] as u16; 
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_font_sprite` is never used
[INFO] [stdout]  --> src/memory/mod.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait CpuMemory {
[INFO] [stdout]   |           --------- method in this trait
[INFO] [stdout] 9 |     fn get_font_sprite(&self, s_n: u8) -> Option<&[u8]>;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_pressed_key` is never used
[INFO] [stdout]  --> src/media_if/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait MediaIf {
[INFO] [stdout]   |           ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 8 |     fn get_pressed_key(&self) -> Option<&u8>;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.33s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83", kill_on_drop: false }`
[INFO] [stdout] 5dad0b7baa14d69a99d2b6cbd49b28d91ca2556c8f73b2b23588378e49530a83
